了解如何查看資料型態後,接著會開始針對各種資料型態在資料分析中常見的處理做介紹。
首先,就先來講講字串(string)的處理吧!
strsplit()
,使用strsplit()
後資料型態會變成list
,再使用unlist()
轉回vector
型態# 先建立一個vector,裡面包含多個元素
day8 = c("May Lin", "Jay Lee", "Ann Liu")
# 使用空格當成切割的斷點,
unlist(strsplit(day8, split = " "))
[1] "May" "Lin" "Jay" "Lee" "Ann" "Liu"
合併可以使用paste()
或paste0()
,使用paste()
時,也可以利用參數sep
來定義要分割的符號
# 將字串做合併
last_name = c("May", "Jay", "Ann")
first_name = c("Lin", "Lee", "Liu")
paste(last_name, first_name)
[1] "May Lin" "Jay Lee" "Ann Liu"
paste(last_name, first_name, sep = "_")
[1] "May_Lin" "Jay_Lee" "Ann_Liu"
# 使用paste0()則last_name與first_name中間不會有空白
paste0(last_name, first_name)
[1] "MayLin" "JayLee" "AnnLiu"
substr()
: 擷取特定位置的字元,指定要取出的字元位置# 先建立一個vector,裡面包含多個元素
day8 = c("May Lin", "Jay Lee", "Ann Liu")
# 只取出名(不含姓氏)
substr(day8, 1, 3)
[1] "May" "Jay" "Ann"
# 另一個取法,使用lapply()搭配前面提到的strsplit()
unlist(lapply(strsplit(day8," "), function(x) x[1]))
grepl()
: 尋找包含特定字串的元素# 取出姓氏為Lin的,若只使用grepl,會回傳TRUE/FALSE
day8 = c("May Lin", "Jay Lee", "Ann Lin")
grepl("Lin", day8)
[1] TRUE FALSE TRUE
# 取出姓氏為Lin的完整人名
day8[grepl("Lin", day8)]
[1] "May Lin" "Ann Lin"
gsub()
: 替換包含特定字串的元素day8 = c("May Lin", "Jay Lee", "May Lin")
# 將包含May的字串替換成Angela
gsub("May", "Angela", day8)
[1] "Angela Lin" "Jay Lee" "Angela Lin"
toupper()
/小寫tolower()
toupper()
和tolower()
就可以快速一起轉大/小寫達成一致)day8 = c("May Lin", "Jay Lee", "Ann Lin")
tolower(day8)
[1] "may lin" "jay lee" "ann lin"
toupper(day8)
[1] "MAY LIN" "JAY LEE" "ANN LIN"
文字處理的介紹就到這邊,下一篇會再繼續介紹更多資料處理常用的函數給大家認識!